# 一类是集合数据类型，如list、tuple、dict、set、str等；
# 一类是generator，包括生成器和带yield的generator function。
# 这些可以直接作用于for循环的对象统称为可迭代对象：Iterable。

# isinstance()判断一个对象是否是Iterable  可迭代判断：
from collections.abc import Iterable,Iterator
print('列表',isinstance([],Iterable))

print('字典',isinstance({},Iterable))

print('字符串',isinstance('a n vn ',Iterable))


print("生成器",isinstance((x for x in range(10)),Iterable))

print('整数',isinstance(100,Iterable))
#是否是迭代器对象
# 凡是可作用于for循环的对象都是Iterable类型；
#
# 凡是可作用于next()函数的对象都是Iterator类型

print('列表',isinstance([],Iterator))

print('字典',isinstance({},Iterator))

print('字符串',isinstance('a n vn ',Iterator))


print("生成器",isinstance((x for x in range(10)),Iterator))

print('整数',isinstance(100,Iterator))

#把可迭代对象变成生成器对象，iter函数

print('列表',isinstance(iter([]),Iterator))

print('字典',isinstance(iter({}),Iterator))

print('字符串',isinstance(iter('a n vn '),Iterator))


print("生成器",isinstance(iter((x for x in range(10))),Iterator))

#不可迭代对象不能转换成iterator
# print('整数',isinstance(iter(100),Iterator))